package edu.pucsp.predatorprey.tela;

import java.util.Map;

import edu.pucsp.predatorprey.simulador.api.SaidaSimulacao;
import edu.pucsp.predatorprey.simulador.api.Simulador;
import edu.pucsp.predatorprey.simulador.impl.InformacaoCiclo;
import edu.pucsp.predatorprey.simulador.java.criatura.AbstractCriatura;
import edu.pucsp.predatorprey.simulador.java.posicao.impl.Posicao;

public class Controle implements SaidaSimulacao {

	private Simulador simulador;

	private Modelo modelo;

	public void iniciarSimulacao() {
		this.simulador.iniciarSimulacao();
	}

	public void pararSimulacao() {
		this.simulador.pararSimulacao();
	}

	@Override
	public void criaturaMorreu(AbstractCriatura criatura, Posicao posicao) {
		this.modelo.criaturaMorreu(posicao);
	}

	@Override
	public void criaturaNasceu(AbstractCriatura criatura, Posicao posicao) {
		this.modelo.criaturaNasceu(criatura, posicao);
	}

	@Override
	public void criaturaMoveu(Posicao origem, Posicao destino) {
		this.modelo.criaturaMoveu(origem, destino);
	}

	@Override
	public void numeroExecucoesSimultaneas(int execucoes) {
		this.modelo.numeroDeExecucoesSimultaneas(execucoes);
	}

	@Override
	public void cicloCompleto(InformacaoCiclo informacao) {
		this.modelo.cicloCompleto(informacao);
	}

	@Override
	public void simulacaoParou() {
		this.modelo.simulacaoParou();
	}

	@Override
	public void simulacaoIniciou(Map<AbstractCriatura, Posicao> posicaoCriaturas) {
		this.modelo.definirPosicaoCriaturas(posicaoCriaturas);
	}

	public void setModelo(Modelo modelo) {
		this.modelo = modelo;
	}

	public void setSimulador(Simulador simulador) {
		this.simulador = simulador;
	}

}
